Index шаблоны: Index templates | Elasticsearch Guide [7.15]
Содержание
Шаблон таблицы индексов — Cloud Design Patterns
-
- Чтение занимает 7 мин
Были ли сведения на этой странице полезными?
Оцените свои впечатления
Да
Нет
Хотите оставить дополнительный отзыв?
Отзывы будут отправляться в корпорацию Майкрософт. Нажав кнопку «Отправить», вы разрешаете использовать свой отзыв для улучшения продуктов и служб Майкрософт. Политика конфиденциальности.
Отправить
Спасибо!
В этой статье
Создание в хранилище данных индексов по полям, которые часто используются в запросах. Этот шаблон может повысить производительность запросов, ускоряя поиск данных, которые нужно извлечь из хранилища.
Контекст и проблема
В многих хранилищах данные для коллекций сущностей организованы при помощи первичного ключа. Этот ключ может использоваться в приложении для поиска и извлечения данных. На рисунке представлен пример хранилища данных со сведениями о клиентах. Первичный ключ — это идентификатор клиента. На рисунке представлены сведения о клиенте, упорядоченные по первичному ключу (идентификатору клиента).
Первичный ключ отлично подходит для запросов данных на основе его значения. Но если нужно получить данные на основе другого поля, первичный ключ не всегда можно использовать. В приведенном выше примере для поиска клиентов в приложении нельзя использовать первичный ключ (идентификатор клиента), если данные запрашиваются исключительно по ссылке на значение какого-нибудь другого атрибута, например на название города, в котором находится клиент. Для выполнения такого запроса приложению может потребоваться получить и изучить каждую запись клиента, что может занять довольно много времени.
Многие системы управления реляционными базами данных поддерживают вторичные индексы. Вторичный индекс — это отдельная структура данных, упорядоченных по одному или нескольким вторичным (дополнительным) ключевым полям. Такой индекс указывает, где хранятся данные для каждого индексированного значения. Элементы вторичного индекса обычно сортируются по значению вторичных ключей, чтобы повысить скорость поиска данных. Такие индексы, как правило, автоматически обслуживаются системой управления базами данных.
Вы можете создать любое количество вторичных индексов для поддержки различных запросов, выполняемых в приложении. Например, в таблице со сведениями о клиентах в реляционной базе данных, где идентификатор клиента является первичным ключом, стоит добавить вторичный индекс над полем города, если в приложении часто выполняется поиск клиентов по городу, в котором они находятся.
Вторичные индексы часто используются в реляционных системах, но большинство хранилищ данных NoSQL, которые используются в облачных приложениях, не предоставляют эквивалентную функцию.
Решение
Если хранилище данных не поддерживает вторичные индексы, их можно эмулировать вручную, создав собственные таблицы индексов. В таблице индексов данные упорядочиваются по указанному ключу. Для структурирования таблицы индексов обычно используются три стратегии. Стратегию выбирают на основе требуемого числа вторичных индексов и характера запросов в приложении.
Первая стратегия — данные дублируются в каждой таблице индексов, но упорядочиваются по разным ключам (полная денормализация). На следующем рисунке представлены таблицы индексов, в которых одни и те же данные клиента упорядочены по городу и фамилии:
Эта стратегия подходит, если данные остаются относительно статическими при любом количестве запросов с помощью каждого ключа. Если данные более динамические, затраты на обслуживание каждой таблицы индексов слишком значительны и такой подход нецелесообразен. Кроме того, если объем данных очень велик, требуется значительное пространство для хранения дублируемых данных.
Вторая стратегия — создаются нормализованные таблицы индексов, которые упорядочены по разным ключам, и добавляются ссылки на исходные данные с помощью первичного ключа (вместо их дублирования), как показано на приведенном ниже рисунке. Исходные данные называются таблицей фактов.
Этот способ позволяет сэкономить место и сократить затраты на обслуживание дублируемых данных. Недостатком такого подхода является то, что приложению требуется выполнять две операции поиска данных с использованием вторичного ключа. Сначала нужно найти первичный ключ для данных в таблице индексов, а затем использовать его для поиска данных в таблице фактов.
Третья стратегия — создаются частично нормализованные таблицы индексов, упорядоченные при помощи различных ключей. В таких таблицах дублируются часто извлекаемые поля. Для доступа к редко используемым полям добавляются ссылки на таблицу фактов. На следующем рисунке показано, как часто используемые данные дублируются в каждой таблице индексов:
Эта стратегия обеспечивает баланс между двумя первыми подходами. Данные для часто выполняемых запросов можно быстро получить при помощи одной операции поиска, а занимаемое пространство и затраты на обслуживание не так значительны, как при дублировании всего набора данных.
Если в приложении часто выполняются запросы данных с несколькими значениями (например, «Найти всех клиентов из Тамбова с фамилией Лоханкин»), можно реализовать ключи для элементов в таблице индексов с объединением атрибутов города и фамилии. На приведенном ниже рисунке представлена таблица индексов на основе составных ключей. Ключи сортируются по городу, а затем — по фамилиям для записей с одинаковыми значениями города.
Таблицы индексов могут ускорить операции запросов для сегментированных данных и особенно полезны, когда ключ сегмента хэшируется. На приведенном ниже рисунке показан пример, где ключ сегмента является хэшем идентификатора клиента. В таблице индексов можно упорядочить данные по нехэшированному значению (город и фамилия) и указать хэшированный ключ как данные поиска. Это поможет предотвратить многократное вычисление хэш-ключей (ресурсоемкую операцию) в приложении, если требуется получить данные в пределах диапазона или в порядке нехэшированных ключей. Например, запрос «Найти всех клиентов, которые живут в Тамбове» можно быстро выполнить, разместив соответствующие элементы в таблице индексов, где все они хранятся в связанном блоке. Затем используйте ссылки на данные клиента с помощью ключей сегментов, которые хранятся в таблице индексов.
Проблемы и рекомендации
При принятии решения о реализации этого шаблона необходимо учитывать следующие моменты.
Затраты на обслуживание вторичных индексов могут оказаться достаточно велики. Необходимо иметь представление о запросах, которые используются в вашем приложении, и анализировать их. Создавайте таблицы индексов, только если планируете использовать их регулярно. Не создавайте теоретические таблицы индексов для поддержки запросов, которые не выполняются в приложении или выполняются лишь время от времени.
Дублирование данных в таблице индексов может повлечь значительные дополнительные расходы на хранение и трудозатраты, так как при этом требуется обслуживание нескольких копий данных.
Для реализации таблицы индексов в виде нормализованной структуры, в которой добавляется ссылка на исходные данные, приложению требуется выполнить две операции поиска данных. Сначала выполняется поиск первичного ключа в таблице индексов, а затем этот ключ используется для получения данных.
Если система содержит несколько таблиц индексов для очень больших наборов данных, иногда трудно поддерживать согласованность между таблицами индексов и исходными данными. Можно разработать приложение на основе модели конечной согласованности. Например, для вставки, обновления или удаления данных приложение может отправить сообщение в очередь и создать отдельную задачу для выполнения операции и обслуживания таблиц индексов, которые асинхронно ссылаются на эти данные. Сведения о реализации согласованности в конечном счете см. в руководстве по обеспечению согласованности данных.
Таблицы в хранилище Microsoft Azure поддерживают обновления транзакций для изменения данных в одной секции (также называются транзакциями группы сущностей). При хранении данных для таблицы фактов и одной или нескольких таблиц индексов в одной секции вы можете использовать эту функцию, чтобы обеспечить согласованность.
Собственно таблицы индексов также можно секционировать или сегментировать.
Когда следует использовать этот шаблон
Этот шаблон используется для повышения производительности запросов, когда приложению часто требуется извлекать данные с помощью ключа, отличного от первичного (или ключа сегментов).
Этот шаблон может оказаться неэффективным в следующих случаях:
- Данные нестабильны. Таблица индексов может очень быстро стать неактуальной. В таком случае не стоит использовать ее, так как затраты на обслуживание таблицы могут превысить экономию от ее применения.
- Поле, выбранное в качестве вторичного ключа для таблицы индексов, недифференцировано и может иметь только небольшой набор значений (например, пол).
- Значения данных поля, выбранного в качестве вторичного ключа для таблицы индексов, очень разрознены. Например, если для 90 % записей в поле содержатся одинаковые значения, создание и обслуживание таблицы индексов для поиска данных на основе этого поля может повлечь большие затраты, чем последовательный просмотр данных. Но если запросы часто обращаются к значениями, которые содержатся в оставшихся 10 % записей, этот индекс можно использовать. Следует иметь представление о запросах, которые выполняет приложение, и об их частоте.
Пример
Таблицы хранилища Azure обеспечивают высокомасштабируемое хранилище ключей и значений для приложений в облаке. В приложениях можно хранить и извлекать значения, указав ключ. Значения данных могут содержать несколько полей, но структура элемента данных непрозрачна для хранилища таблиц, в котором элемент данных просто обрабатывается как массив байтов.
Таблицы хранилища Azure также поддерживают сегментирование. Ключ сегментирования включает два элемента: ключ секции и ключ строки. Элементы с одним ключом секции хранятся в одной секции (сегменте) в порядке ключей строк. Хранилище таблиц оптимизировано для выполнения запросов данных в непрерывном диапазоне значений для ключа строки в секции. Если вы создаете облачные приложения, в которых данные хранятся в таблицах Azure, структурируйте данные с учетом этой функции.
Например, рассмотрим приложение со сведениями о фильмах. В приложении часто выполняются запросы на фильмы по жанру (остросюжетный фильм, документальный фильм, исторический фильм, комедия, драма и т. д). Можно создать таблицу Azure с секцией для каждого жанра, используя жанр в качестве ключа секции и указывая название фильма в качестве ключа строки, как показано на рисунке ниже:
Этот подход менее эффективен, если в приложении также нужно выполнять запросы по имени актеров. В этом случае можно создать отдельную таблицу Azure, которая будет таблицей индексов. Ключ секции — это имя актера, а ключ строки — название фильма. Данные для каждого актера будут храниться в отдельной секции. Если в фильме снимается несколько искомых актеров, его название будет содержаться в нескольких секциях.
Можно дублировать данные фильма, содержащиеся в значениях в каждой секции, используя первый подход. Он описан выше в разделе «Решение». Но есть вероятность, что каждый фильм будет реплицирован несколько раз (один раз для каждого актера). Поэтому лучше частично денормализовать данные для поддержки наиболее частых запросов (например, по именам других актеров). Также рекомендуем настроить приложение для получения всех оставшихся данных, включая ключ секции, необходимый для поиска подробной информации в секциях для жанра. Этот подход описан как третий вариант в разделе «Решение». Он представлен на рисунке ниже.
При реализации этого шаблона следует принять во внимание следующие шаблоны и рекомендации.
- Руководство по согласованности данных. Таблицы индексов должны обслуживаться, так как индексируемые данные могут измениться. Иногда в облаке невозможно или нерентабельно обновлять индексы в рамках той же транзакции, в которой изменяются данные. В этом случае подход конечной согласованности является более уместным. Руководство содержит сведения о проблемах, которые касаются конечной согласованности.
- Шаблон сегментирования. Шаблон таблицы индексов часто используется с данными, которые секционированы с применением сегментов. Шаблон сегментирования предоставляет дополнительные сведения о том, как преобразовать хранилище данных в набор сегментов.
- Шаблон материализованных представлений. Вместо индексирования данных для поддержки сводных запросов, возможно, целесообразнее создать материализованное представление данных. Здесь описано, как реализовать эффективную поддержку сводных запросов, создав предварительно заполненные представления данных.
python — django.template.exceptions.TemplateDoesNotExist: news/index.html — Stack Overflow на русском
news/views.py:
from django.shortcuts import render
from .models import Bd
# Create your views here.
def index(request):
bbs = Bd.objects.all()
return render(request, template_name='news/index.html', context={'bbs': bbs})
news/settings.py:
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.q3i28q4j_!'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'border'
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'news.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'news.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/3.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
STATIC_URL = '/static/'
# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> Нзавание сайта </title>
</head>
<body>
<h2>Объявление</h2>
{% for bb in bbs %}
<div>
<h3>{{ bb.title}}</h3>
<p>{{bb.price}}</p>
</div>
{% enffor %}
</body>
</html>
border/models.py:
from django.db import models
# Create your models here.
class Bd(models.Model):
title = models.TextField(max_length=20)
price = models.IntegerField(max_length=10)
def __str__(self):
return self.title
class Meta:
verbose_name_plural = 'Объявления'
verbose_name = 'Объявление'
ordering = ['-price', ]
border/views.py
from django.db import models
# Create your models here.
class Bd(models.Model):
title = models.TextField(max_length=20)
price = models.IntegerField(max_length=10)
def __str__(self):
return self.title
class Meta:
verbose_name_plural = 'Объявления'
verbose_name = 'Объявление'
ordering = ['-price', ]
ФГИС Меркурий. Шаблоны заявлений
Приказом Минсельхоза России от 27.12.2016 г. № 589 определен порядок оформления документов, а также уполномоченные лица, которым дано право оформления ветеринарных сопроводительных документов.
Ветеринарные сопроводительные документы в электронном виде оформляются с использованием государственной информационной системы «Меркурий». Право доступа для совершения действий в информационной системе предоставляется зарегистрированным уполномоченным лицам. Регистрация осуществляется путем направлений заявлений на предоставление доступа в Управление Россельхознадзора в письменном виде.
Шаблоны:
ЗАЯВЛЕНИЕ о регистрации в ФГИС ВетИС и предоставлении доступа к ФГИС «Меркурий» сотрудникам юридического лица
ЗАЯВЛЕНИЕ о регистрации в ФГИС ВетИС и предоставлении доступа к ФГИС «Меркурий» сотрудникам индивидуального предпринимателя
ЗАЯВЛЕНИЕ о регистрации в ФГИС ВетИС и предоставлении доступа к ФГИС «Меркурий» физическим лицам
При этом необходимо учитывать, что право оформления ветеринарных сопроводительных документов дано не только ветеринарным специалистам органов и учреждений, входящих в систему государственной ветеринарной службы, а также, в зависимости от категории товаров, ветеринарным специалистам, не входящим в структуру органов госветслужбы, аттестованным в установленном порядке и уполномоченным лицам организаций, являющихся производителями производственных товаров.
Приказами Минсельхоза от 18.12.2015 № 648; 18.12.2015 № 646; 15.04.2019 № 194 утверждены перечни подконтрольной продукции животного происхождения, подлежащей ветеринарной сертификации.
По вопросам получения доступа к электронным ветеринарным системам можно обращаться по телефонам (3852) 66-81-60; 66-70-30, а также можно ознакомиться на сайте Россельхознадзора в разделе «Ветис» (электронная ветеринарная сертификация).
Как начать работать во ФГИС «Меркурий»
Новости по теме:
wordpress — Как сделать так, чтобы шаблоны категорий, страницы и индекс отображались в одном меню в wordpress?
У меня возникли проблемы со структурированием веб-сайта WordPress. В основном этот сайт будет иметь следующие страницы:
- Дом
- портфолио
- Новости
- Связаться с нами
Дом будет спроектирован с помощью index.php, это не проблема. На этой странице я покажу некоторые сообщения, которые должны быть в новостях, а некоторые — в портфолио. На страницах Портфолио и Новости должен быть представлен список сообщений, соответствующих этой категории. Контакт — это обычная статическая страница.
Моя идея заключалась в том, чтобы создать статическую страницу для портфолио и новостей и изменить ее тему, чтобы я получил список сообщений, соответствующих этой категории, и обработал его. Но я обнаружил, что это не работает, как я думал, потому что страницы не предназначены для этого. По этой причине некоторые функции (например, the_content) не работают. Итак, я узнал о шаблонах категорий, которые кажутся мне именно тем, что мне нужно. Но теперь моя проблема в том, что мое меню создается автоматически, и мне это нравится. Использование шаблона страницы категории привело бы к тому, что мне пришлось бы создавать его вручную, что выглядит (для новичка) неприятным запахом, если он может быть построен автоматически.
Хороший ли подход с Home-> index.php, новостями и портфолио -> шаблоном категории и контактами -> статической страницей? Как мне при таком подходе создать меню элегантно?
Спасибо! Оскар
0
JSBach
27 Окт 2012 в 09:03
2 ответа
Лучший ответ
Я не думаю, что ваш подход был лучшим, я бы использовал шаблоны страниц, чтобы вытащить различные макет / тип страниц и используйте файл front-page.php для создания домашней страницы.
Но, думаю, у каждого разработчика свой путь.
Я думаю, вы можете легко решить свою проблему, создав меню с помощью встроенного конструктора меню WordPress. Вы можете перейти в Внешний вид> Меню, если ваша тема совместима с этим.
Дополнительную документацию можно найти здесь
Надеюсь, это поможет! ваше здоровье
1
CMoreira
27 Окт 2012 в 09:17
В wordpress вы можете добавить статическую страницу или категории или любые другие страницы в меню wordpress. Чтобы создать меню в wordpress, перейдите по этим ссылкам. создание меню
0
Suku
25 Мар 2015 в 11:51
Главный файл иерархии шаблонов WordPress index.php
Итак, давайте будем разбираться в этой схеме (см. видео) визуализации иерархии файлов шаблонов WordPress, что здесь все значит и как с этим работать.
Для этого в предыдущих уроках мы с вами создали такую простую тему, которая состоит из 2-х файлов index.php и style.css.
Активируем эту тему через главное меню Внешний вид — Темы.
И давайте приступать к работе.
Если перейти на главную страницу сайта, то у нас отображается просто белый экран. Ничего не отображается.
Почему так произошло?
Дело в том, что у нас сейчас в активной теме есть только один файл index.php и какой бы контент мы не открывали, во всех случаях будем открываться этот шаблон, который сейчас пустой.
Для того, чтобы в этом убедиться, давайте изменим содержимое этого файла и вставим туда простой HTML-каркас.
<!doctype html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="UTF-8"> <title>Это файл index.php</title> </head> <body> Это файл index.php </body> </html>
Сделаем это для того, чтобы было понятно, что у нас отображается этот файл. Пробуем снова перейти на главную страницу и мы с вами, что это у нас файл index.php. У нас появилась черная полоска, благодаря тому, что у нас появился каркас этой страницы.
Куда бы мы с вами не переходили и какой бы контент мы бы с вами не просматривали, у нас в любом случае будет срабатывать шаблон index.php.
Что бы мы с вами не просматривали: рубрики, содержимое, метки, страницы 404 и.т.д. В любом случае будет отображаться файл index.php. Это корень нашей темы WordPress, с помощью которой, соответственно, у нас выводится все содержимое, которое у нас есть на этом сайте.
Попробуйте добиться такого же эффекта у себя и будем переходить к следующим урокам, чтобы начинать разбираться в ветвлении иерархии файлов шаблонов WordPress и посмотрим, как это будет работать.
Datora remonts | Baltija Informācijas Tehnoloģijas SIA LV94RIKO0002023030005 | 98.00 EUR | LAT | Pavadzīme Nr. BIT 001463, datora remonts un diska nomaiņa | 10.11.2012 | Atvert |
Par dzīvokli | Jānis Bērziņš LV94RIKO0002023030007 | 1 335.00 EUR | LAT | Par dzīvokļa īri | 10.11.2012 | Atvert |
Pakalpojumi | SIA Tīra sēta LV94RIKO0002023030009 | 12 335.00 EUR | LAT | Līg.nr.02-01-MC, rēķ.nr.1103, apsaimniekošanas pakalpojumu sniegšana | 10.11.2012 | Atvert |
Dzīvības apdrošināšana | SIA Pamatīga apdrošināšana LV94RIKO0002023030008 | 35.00 EUR | LAT | Rēķins par ūdeni Nr. 151154, KONTS 1111 Mārupe, Liliju 78, Ilze Liepiņa p.k. 111111-10101 | 10.11.2012 | Atvert |
Mammai | Anna Bērziņa LV94RIKO0002023030006 | 35.00 EUR | LAT | Maksājums par rēķinu | 10.11.2012 | Atvert |
Mārtiņam | Mārtiņš Kalniņš LV94RIKO0002023030003 | 241 035.00 EUR | LAT | Par dzīvokļa īri | 10.11.2012 | Atvert |
Par internetu | SIA Lattelecom LV94RIKO0002023030001 | 35.00 EUR | LAT | Par dzīvokļa īri | 10.11.2012 | Atvert |
Name | Last modified | Size | Description | |
---|---|---|---|---|
Parent Directory | — | |||
Базовые станции/ | 2020-12-21 15:13 | — | ||
Вода/ | 2021-01-29 13:21 | — | ||
Газ/ | 2020-10-07 15:49 | — | ||
РЭ-Модули-LoraWAN-для-счетчика-газа-BK-G4-Elster-док-вер2.1.pdf | 2020-09-13 05:11 | 1.0M | ||
РЭ-Модуль-нис-г-NB-IoT-для-счетчиков-газа-BK-G4-Elster-V6.pdf | 2020-09-13 05:15 | 2.0M | ||
РЭ-модуль-с-NB-IoT-для-эл.-счётчика-электроэнергии-V3.pdf | 2020-09-13 04:17 | 1.9M | ||
Albom-tekhnicheskih-reshenij-AistioT.pdf | 2020-09-12 12:28 | 943K | ||
KARAT-Kompakt-2-213-kvartirnye-teploschetchiki-s-interfejsom-LoRaWAN.pdf | 2020-09-13 05:00 | 444K | ||
NANOSHLYUZ-WIRNET-IFEMTOCELL.pdf | 2020-09-13 05:06 | 697K | ||
RE-Modul-LoraWAN-dlya-schetchika-vody-SVK15-3-2-V2.1.pdf | 2020-09-12 17:59 | 1.3M | ||
aist-100/ | 2021-06-08 09:05 | — | ||
aist-300/ | 2020-12-21 14:28 | — | ||
lis/ | 2020-09-13 07:52 | — | ||
puma/ | 2020-09-13 07:54 | — | ||
retrofit/ | 2020-12-21 15:06 | — | ||
шаблонов указателей | Руководство по Elasticsearch [7.15]
В этом разделе описываются шаблоны составных индексов, представленные в Elasticsearch 7.8.
Для получения информации о том, как раньше работали шаблоны индексов,
см. документацию по устаревшим шаблонам.
Шаблон индекса — это способ сообщить Elasticsearch, как настроить индекс, когда он
созданный. Для потоков данных шаблон индекса настраивает поддержку потока.
индексы по мере их создания. Шаблоны настроены
до создания индекса .При создании индекса — вручную или
путем индексации документа — настройки шаблона используются как основа для
создание индекса.
Существует два типа шаблонов: шаблоны индекса и шаблоны компонентов. Шаблоны компонентов — это многоразовые здания
блоки, которые настраивают сопоставления, параметры и псевдонимы. Хотя вы можете использовать
шаблоны компонентов для создания шаблонов индексов, они не применяются напрямую
к набору индексов. Шаблоны индекса могут содержать набор компонентов
шаблоны, а также напрямую указывать настройки, сопоставления и псевдонимы.
К шаблонам индексов применяются следующие условия:
- Составные шаблоны имеют приоритет над устаревшими шаблонами. Если нет составного
шаблон соответствует заданному индексу, устаревший шаблон все еще может совпадать и быть
применяемый. - Если индекс создан с явными настройками и также соответствует индексу
шаблон, настройки из запроса создания индекса
имеют приоритет над настройками, указанными в шаблоне индекса и его компоненте
шаблоны. - Если новый поток данных или индекс соответствует более чем одному шаблону индекса, индекс
шаблон с наивысшим приоритетом.
Создать шаблон индексаправить
Используйте шаблон индекса и поместите API шаблона компонента для создания и обновления шаблонов индекса.
Вы также можете управлять шаблонами индекса из Stack
Менеджмент в Кибане.
Следующие запросы создают два шаблона компонентов.
PUT _component_template / component_template1 { "шаблон": { "mappings": { "характеристики": { "@timestamp": { "тип": "дата" } } } } } PUT _component_template / runtime_component_template { "шаблон": { "mappings": { «время выполнения»: { "день недели": { "тип": "ключевое слово", "script": { "источник": "emit (doc ['@ timestamp'].value.dayOfWeekEnum.getDisplayName (TextStyle.FULL, Locale.ROOT)) " } } } } } }
Этот шаблон компонента добавляет поле времени выполнения |
Следующий запрос создает шаблон индекса, который состоит из , состоящих из этих
шаблоны компонентов.
PUT _index_template / template_1 { "index_patterns": ["te *", "bar *"], "шаблон": { "настройки": { "number_of_shards": 1 }, "mappings": { "_источник": { "включен": истина }, "характеристики": { "host_name": { "тип": "ключевое слово" }, "создано в": { "тип": "дата", "формат": "EEE MMM дд ЧЧ: мм: сс З гггг" } } }, "псевдонимы": { "мои данные": { } } }, «приоритет»: 500, "created_of": ["component_template1", "runtime_component_template"], «версия»: 3, "_meta": { "описание": "мой обычай" } }
Моделирование многокомпонентных шаблонов | Руководство по Elasticsearch [7.15]
Моделирование многокомпонентных шаблоновправить
Поскольку шаблоны могут состоять не только из нескольких шаблонов компонентов, но также из индекса
сам шаблон, есть два API моделирования, чтобы определить, какие настройки индекса будут
быть.
Для имитации настроек, которые будут применены к определенному имени индекса:
POST / _index_template / _simulate_index / my-index-000001
Для имитации настроек, которые будут применены из существующего шаблона:
POST / _index_template / _simulate / template_1
Вы также можете указать определение шаблона в запросе моделирования.Это позволяет вам убедиться, что настройки будут применены должным образом, перед добавлением нового шаблона.
PUT / _component_template / ct1 { "шаблон": { "настройки": { "index.number_of_shards": 2 } } } PUT / _component_template / ct2 { "шаблон": { "настройки": { "index.number_of_replicas": 0 }, "mappings": { "характеристики": { "@timestamp": { "тип": "дата" } } } } } POST / _index_template / _simulate { "index_patterns": ["мой *"], "шаблон": { "настройки" : { "показатель.number_of_shards ": 3 } }, "created_of": ["ct1", "ct2"] }
В ответе показаны настройки, сопоставления и псевдонимы, которые будут применяться к сопоставимым индексам,
и любые перекрывающиеся шаблоны, конфигурация которых будет заменена смоделированным телом шаблона.
или шаблоны с более высоким приоритетом.
{ "шаблон" : { "настройки" : { "показатель" : { "number_of_shards": "3", "number_of_replicas": "0" } }, "mappings": { "характеристики" : { "@timestamp": { "тип": "дата" } } }, "псевдонимы": {} }, "перекрытие": [ { "name": "template_1", "index_patterns": [ "мой*" ] } ] }
Количество шардов из тела моделируемого шаблона | |
Поле | |
Любые перекрывающиеся шаблоны, которые могли бы совпадать, но имеют более низкий приоритет |
индексных шаблонов | Руководство по Elasticsearch [6.8]
Шаблоны указателей
позволяют определять шаблоны, которые будут автоматически
применяется при создании новых индексов. Шаблоны включают в себя как
настройки и сопоставления
и простой шаблон шаблона, который определяет, должен ли шаблон быть
применяется к новому индексу.
Шаблоны применяются только во время создания индекса. Смена шаблона
не повлияет на существующие индексы. При использовании API создания индекса
настройки / сопоставления, определенные как часть вызова создания индекса, будут иметь приоритет
над любыми соответствующими настройками / сопоставлениями, определенными в шаблоне.
Например:
PUT _template / template_1 { "index_patterns": ["te *", "bar *"], "настройки": { "number_of_shards": 1 }, "mappings": { "_doc": { "_источник": { "включен": ложь }, "характеристики": { "host_name": { "тип": "ключевое слово" }, "создано в": { "тип": "дата", "формат": "EEE MMM дд ЧЧ: мм: сс З гггг" } } } } }
Шаблоны индекса
предоставляют комментарии блока / * * / в стиле C / * /.Комментарии разрешены
везде в документе JSON, кроме начальной открывающей фигурной скобки.
Определяет шаблон с именем template_1
с шаблоном шаблона te *
или bar *
.
Настройки и сопоставления будут применены к любому имени индекса, соответствующему
образец te *
или bar *
.
Также можно включать псевдонимы в шаблон индекса следующим образом:
PUT _template / template_1 { "index_patterns": ["te *"], "настройки" : { "number_of_shards": 1 }, "псевдонимы": { "псевдоним1": {}, "alias2": { "filter": { "term": {"user": "kimchy"} }, "маршрутизация": "кимчы" }, "{index} -alias": {} } }
заполнитель |
Удаление шаблонаправить
Шаблоны индекса идентифицируются по имени (в приведенном выше случае
template_1
), также можно удалить:
УДАЛИТЬ / _template / template_1
Получение шаблоновправить
Шаблоны индекса идентифицируются по имени (в приведенном выше случае
template_1
) и может быть получен с помощью следующего:
GET / _template / template_1
Вы также можете сопоставить несколько шаблонов с помощью подстановочных знаков, например:
GET / _template / temp * GET / _template / template_1, template_2
Чтобы получить список всех шаблонов индексов, вы можете запустить:
Шаблон существуетправить
Используется для проверки наличия шаблона.Например:
HEAD _template / template_1
Код состояния HTTP указывает, что шаблон с заданным именем
существует или нет. Код состояния 200
означает, что он существует, а 404
означает
это не.
Соответствие нескольких шаблоновedit
Несколько шаблонов индекса потенциально могут соответствовать индексу, в этом случае
и настройки, и сопоставления объединяются в окончательную конфигурацию
индекса. Порядок объединения можно контролировать с помощью
параметр порядка
, сначала применяется более низкий порядок, а затем более высокий
приказы отменяют их.Например:
PUT / _template / template_1 { "index_patterns": ["*"], «порядок»: 0, "настройки" : { "number_of_shards": 1 }, "mappings": { "_doc": { "_source": {"enabled": false} } } } PUT / _template / template_2 { "index_patterns": ["te *"], «порядок»: 1, "настройки" : { "number_of_shards": 1 }, "mappings": { "_doc": { "_source": {"enabled": true} } } }
Вышеуказанное отключит сохранение _source
, но
для индексов, начинающихся с te *
, _source
по-прежнему будет включен.Обратите внимание, что для сопоставлений слияние является «глубоким», что означает, что конкретный
сопоставления на основе объектов / свойств могут быть легко добавлены / переопределены на более высоких уровнях
шаблоны заказов с шаблонами более низкого порядка, составляющими основу.
Несколько совпадающих шаблонов с одинаковой стоимостью заказа будут
приведет к недетерминированному порядку слияния.
Управление версиями шаблонаedit
Шаблоны
могут дополнительно добавлять номер версии
, который может быть любым целым числом,
чтобы упростить управление шаблонами внешними системами.Версия
поле является необязательным и предназначено исключительно для внешнего управления
шаблоны. Чтобы отменить установку версии
, просто замените шаблон без указания
один.
PUT / _template / template_1 { "index_patterns": ["*"], «порядок»: 0, "настройки" : { "number_of_shards": 1 }, «версия»: 123 }
Чтобы проверить версию
, вы можете
фильтровать ответы
используя filter_path
, чтобы ограничить ответ только версией
:
GET / _template / template_1? Filter_path = *.версия
Это должно дать небольшой ответ, который сделает его легким и недорогим для синтаксического анализа:
{ "template_1": { «версия»: 123 } }
Шаблоны индекса
— Открытый дистрибутив для Elasticsearch Документация
Открытый дистрибутив для разработки Elasticsearch перемещен в OpenSearch. Плагины ODFE будут продолжать работать с устаревшими версиями Elasticsearch OSS, но мы рекомендуем перейти на OpenSearch, чтобы воспользоваться преимуществами последних функций и улучшений.
Шаблоны индексов позволяют инициализировать новые индексы с предварительно заданными сопоставлениями и настройками. Например, если вы постоянно индексируете данные журнала, вы можете определить шаблон индекса, чтобы все эти индексы имели одинаковое количество сегментов и реплик.
Elasticsearch переключился с _template
на _index_template
в версии 7.8. Используйте _template
для более старых версий Elasticsearch.
Оглавление
- Создать шаблон
- Получить шаблон
- Настроить несколько шаблонов
- Удалить шаблон
- Параметры шаблона индекса
Создать шаблон
Для создания шаблона индекса используйте запрос POST:
Эта команда создает шаблон с именем daily_logs
и применяет его к любому новому индексу, имя которого соответствует регулярному выражению logs-2020-01- *
, а также добавляет его к псевдониму my_logs
:
PUT _index_template / daily_logs
{
"index_patterns": [
"журналы-2020-01- *"
],
"шаблон": {
"псевдонимы": {
"my_logs": {}
},
"настройки": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"характеристики": {
"timestamp": {
"тип": "дата",
"формат": "гггг-ММ-дд ЧЧ: мм: сс || гггг-ММ-дд || epoch_millis"
},
"ценить": {
"тип": "двойной"
}
}
}
}
}
Вы должны увидеть следующий ответ:
Если вы создадите индекс с именем logs-2020-01-01
, вы увидите, что он имеет сопоставления и настройки из шаблона:
PUT logs-2020- 01-01
GET logs-2020-01-01
{
"logs-2020-01-01": {
"псевдонимы": {
"my_logs": {}
},
"mappings": {
"характеристики": {
"timestamp": {
"тип": "дата",
"формат": "гггг-ММ-дд ЧЧ: мм: сс || гггг-ММ-дд || epoch_millis"
},
"ценить": {
"тип": "двойной"
}
}
},
"настройки": {
"показатель": {
"creation_date": "1578107970779",
"number_of_shards": "2",
"number_of_replicas": "1",
"uuid": "U1vMDMOHSAuS2IzPcPHpOA",
"версия": {
"created": "7010199"
},
"provided_name": "logs-2020-01-01"
}
}
}
}
Любые дополнительные индексы, соответствующие этому шаблону — logs-2020-01-02
, logs-2020-01-03
и т. Д. — унаследуют те же сопоставления и настройки.
Получить шаблон
Чтобы вывести список всех шаблонов индекса:
Чтобы найти шаблон по его имени:
GET _index_template / daily_logs
Чтобы получить список всех ваших шаблонов:
GET _index_template / daily_logs
Чтобы получить список всех шаблонов, соответствующих шаблону:
GET _index_template / daily *
Чтобы проверить, существует ли конкретный шаблон:
HEAD _index_template /
Сконфигурируйте несколько шаблонов
Вы можете создать несколько шаблонов индексов для своих индексов.Если имя индекса соответствует нескольким шаблонам, Elasticsearch объединяет все сопоставления и настройки из всех подходящих шаблонов и применяет их к индексу.
Настройки из недавно созданных шаблонов индексов имеют приоритет над настройками старых шаблонов индексов. Итак, вы можете сначала определить несколько общих настроек в общем шаблоне, который может действовать как универсальный, а затем при необходимости добавить более специализированные настройки.
Еще лучший подход — явно указать приоритет шаблона с помощью параметра order
.Elasticsearch сначала применяет шаблоны с более низким приоритетом, а затем заменяет их шаблонами с более высоким приоритетом.
Например, у вас есть два следующих шаблона, которые соответствуют индексу logs-2020-01-02
, и есть конфликт в поле number_of_shards
:
Template 1
PUT _index_template / template-01
{
"index_patterns": [
"журналы *"
],
«приоритет»: 0,
"шаблон": {
"настройки": {
"number_of_shards": 2
}
}
}
Шаблон 2
PUT _index_template / template-02
{
"index_patterns": [
"журналы-2020-01- *"
],
«приоритет»: 1,
"шаблон": {
"настройки": {
"number_of_shards": 3
}
}
}
Поскольку template-02
имеет более высокий приоритет значение
, он имеет приоритет над template-01
.Индекс logs-2020-01-02
будет иметь значение number_of_shards
как 3.
Удалить шаблон
Вы можете удалить шаблон индекса, используя его имя, как показано в следующей команде:
DELETE _index_template / daily_logs
Параметры шаблона индекса
Вы можете указать параметры, показанные в следующей таблице:
Опция | Тип | Описание | Обязательно |
---|---|---|---|
приоритет | 3 Номер | Нет | |
создать | Логическое значение | Укажите, должен ли этот шаблон индекса заменять существующий. | Нет |
Общие сведения о шаблонах индекса Elasticsearch и способы их просмотра
Что такое шаблон индекса Elasticsearch?
Шаблоны индексов определяют настройки и сопоставления, которые можно автоматически применять при создании новых индексов. Elasticsearch применяет шаблоны к новым индексам на основе шаблона индекса, соответствующего имени индекса.
Шаблоны индекса применяются только во время создания индекса. Изменения в шаблонах индексов не влияют на существующие индексы. Параметры и сопоставления, указанные в , создают запросы API индекса переопределяют любые параметры или сопоставления, указанные в шаблоне индекса.
Как просмотреть текущие шаблоны?
Есть два способа просмотреть текущие шаблоны индексов в стеке Logit ELK.
1. Использование инструментов разработчика Kibana
Один из способов — использовать инструменты разработчика в Kibana.Вы можете получить доступ к Kibana из любой панели управления, нажав кнопку «Запустить Kibana».
После открытия Kibana вам нужно открыть Kibana Dev Tools, щелкнув значок гаечного ключа в левом меню.
В разделе консоли на экране мы собираемся ввести следующую команду.
GET _template
Вы должны получить результат, аналогичный показанному на скриншоте ниже. Здесь вы можете увидеть все шаблоны индекса, которые в настоящее время используются в этом экземпляре Elasticsearch.
Вы также можете найти определенный шаблон. Например, если мы хотим увидеть шаблон для шаблона индекса filebeat- *, мы можем запустить следующую команду, чтобы вернуть только желаемый шаблон. Мы использовали подстановочное выражение ниже, чтобы вернуть любой шаблон, содержащий filebeat-‘wildcard ‘.
GET _template / filebeat- *
Это вернет вывод JSON, аналогичный приведенному ниже снимку экрана. Здесь вы можете увидеть следующее.
Имя шаблона индекса = filebeat-7.7
Порядок шаблона = 1
Шаблон индекса, к которому применяется этот шаблон = filebeat- *
2. Использование API индексации шаблона
Второй способ просмотра шаблонов индекса в настоящее время используется API шаблона индекса. Для этого вам понадобится адрес конечной точки Elasticsearch и ваш ApiKey. Доступ к ним можно получить на панели управления, выбрав «Настройки стека »> «Elasticsearch».
Следующим шагом будет написание команды curl -x get для получения сопоставлений из Elasticsearch.В окне терминала вы можете запустить команду, подобную приведенной ниже.
curl -X GET https: // -es.logit.io/_template/?apikey= & pretty
Это вернет вывод JSON, аналогичный скриншот ниже.
Подобно использованию Kibana Dev Tools, вы также можете искать определенный шаблон с помощью API шаблона индекса.
Для этого вы можете запустить команду, подобную приведенной ниже, не забывая подставлять в свой идентификатор стека и стек ApiKey.
curl -X GET https: // -es.logit.io/_template/filebeat-*/?apikey= & pretty
Добавив ‘filebeat — * / ‘к команде, мы можем искать только шаблоны индекса, содержащие filebeat- *.
Что дальше?
Шаблоны индексов — документация OpenSearch
Шаблоны индексов позволяют инициализировать новые индексы с предварительно заданными сопоставлениями и настройками. Например, если вы постоянно индексируете данные журнала, вы можете определить шаблон индекса, чтобы все эти индексы имели одинаковое количество сегментов и реплик.
Создание шаблона
Для создания шаблона индекса используйте запрос POST:
Эта команда создает шаблон с именем daily_logs
и применяет его к любому новому индексу, имя которого совпадает с регулярным выражением logs-2020-01- *
, а также добавляет его к my_logs
псевдоним:
PUT _index_template / daily_logs
{
"index_patterns": [
"журналы-2020-01- *"
],
"шаблон": {
"псевдонимы": {
"my_logs": {}
},
"настройки": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"характеристики": {
"timestamp": {
"тип": "дата",
"формат": "гггг-ММ-дд ЧЧ: мм: сс || гггг-ММ-дд || epoch_millis"
},
"ценить": {
"тип": "двойной"
}
}
}
}
}
Вы должны увидеть следующий ответ:
Если вы создадите индекс с именем logs-2020-01-01
, вы увидите, что он имеет сопоставления и настройки из шаблона:
PUT logs-2020- 01-01
GET logs-2020-01-01
{
"logs-2020-01-01": {
"псевдонимы": {
"my_logs": {}
},
"mappings": {
"характеристики": {
"timestamp": {
"тип": "дата",
"формат": "гггг-ММ-дд ЧЧ: мм: сс || гггг-ММ-дд || epoch_millis"
},
"ценить": {
"тип": "двойной"
}
}
},
"настройки": {
"показатель": {
"creation_date": "1578107970779",
"number_of_shards": "2",
"number_of_replicas": "1",
"uuid": "U1vMDMOHSAuS2IzPcPHpOA",
"версия": {
"created": "7010199"
},
"provided_name": "logs-2020-01-01"
}
}
}
}
Любые дополнительные индексы, соответствующие этому шаблону — logs-2020-01-02
, logs-2020-01-03
и т. Д. — унаследуют те же сопоставления и настройки.
Получить шаблон
Чтобы перечислить все шаблоны индекса:
Чтобы найти шаблон по его имени:
GET _index_template / daily_logs
Чтобы получить список всех ваших шаблонов:
GET _index_template / daily_logs
Чтобы получить список всех шаблонов, соответствующих шаблону:
GET _index_template / daily *
Чтобы проверить, существует ли конкретный шаблон:
HEAD _index_template /
Сконфигурируйте несколько шаблонов
Вы можете создать несколько шаблонов индексов для своих индексов.Если имя индекса соответствует более чем одному шаблону, OpenSearch объединяет все сопоставления и настройки из всех соответствующих шаблонов и применяет их к индексу.
Настройки из недавно созданных шаблонов индексов имеют приоритет над настройками старых шаблонов индексов. Итак, вы можете сначала определить несколько общих настроек в общем шаблоне, который может действовать как универсальный, а затем при необходимости добавить более специализированные настройки.
Еще лучший подход — явно указать приоритет шаблона с помощью параметра order
.OpenSearch сначала применяет шаблоны с номерами более низкого приоритета, а затем заменяет их шаблонами с номерами более высокого приоритета.
Например, у вас есть два следующих шаблона, которые соответствуют индексу logs-2020-01-02
, и есть конфликт в поле number_of_shards
:
Template 1
PUT _index_template / template-01
{
"index_patterns": [
"журналы *"
],
«приоритет»: 0,
"шаблон": {
"настройки": {
"number_of_shards": 2
}
}
}
Шаблон 2
PUT _index_template / template-02
{
"index_patterns": [
"журналы-2020-01- *"
],
«приоритет»: 1,
"шаблон": {
"настройки": {
"number_of_shards": 3
}
}
}
Поскольку template-02
имеет более высокий приоритет значение
, он имеет приоритет над template-01
.Индекс logs-2020-01-02
будет иметь значение number_of_shards
как 3.
Удалить шаблон
Вы можете удалить шаблон индекса, используя его имя:
DELETE _index_template / daily_logs
Составные шаблоны индексов
Управление несколькими шаблонами индексов связано со следующими проблемами:
- Если у вас есть дублирование между шаблонами индексов, сохранение этих шаблонов индексов приводит к большему состоянию кластера.
- Если вы хотите внести изменения во все шаблоны индекса, вы должны вручную внести изменения для каждого шаблона.
- Если индекс соответствует нескольким шаблонам, OpenSearch может объединить шаблоны неожиданным образом, который вы обнаружите только после создания индекса.
Для решения этих проблем можно использовать шаблоны составных индексов. Шаблоны составных индексов позволяют абстрагировать общие настройки, сопоставления и псевдонимы в многократно используемый строительный блок, называемый шаблоном компонента.
Вы можете комбинировать шаблоны компонентов для создания шаблона индекса.
Параметры и сопоставления, которые вы указываете непосредственно в запросе на создание индекса, переопределяют любые параметры или сопоставления, указанные в шаблоне индекса и его шаблонах компонентов.
Создание шаблона компонента
Давайте определим два шаблона компонента— component_template_1
и component_template_2
:
Шаблон компонента 1
PUT _component_template / component_template_1
{
"шаблон": {
"mappings": {
"характеристики": {
"@timestamp": {
"тип": "дата"
}
}
}
}
}
Шаблон компонента 2
PUT _component_template / component_template_2
{
"шаблон": {
"mappings": {
"характеристики": {
"айпи адрес": {
"тип": "ip"
}
}
}
}
}
Использование шаблонов компонентов для создания шаблона индекса
При создании шаблонов индекса необходимо включить шаблоны компонентов в список сочлененный_из
.
OpenSearch применяет шаблоны компонентов в том порядке, в котором они указаны в шаблоне индекса. Параметры, сопоставления и псевдонимы, указанные вами в шаблоне индекса, применяются в последнюю очередь.
PUT _index_template / daily_logs
{
"index_patterns": [
"журналы-2020-01- *"
],
"шаблон": {
"псевдонимы": {
"my_logs": {}
},
"настройки": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"характеристики": {
"timestamp": {
"тип": "дата",
"формат": "гггг-ММ-дд ЧЧ: мм: сс || гггг-ММ-дд || epoch_millis"
},
"ценить": {
"тип": "двойной"
}
}
}
},
«приоритет»: 200,
"created_of": [
"шаблон_компонента_1",
"шаблон_компонента_2"
],
«версия»: 3,
"_meta": {
"описание": "с использованием шаблонов компонентов"
}
}
Если вы создадите индекс с именем logs-2020-01-01
, вы увидите, что он выводит свои сопоставления и настройки из обоих шаблонов компонентов:
PUT logs-2020-01-01
GET logs-2020-01-01
Образец ответа
{
"logs-2020-01-01": {
"псевдонимы": {
"my_logs": {}
},
"mappings": {
"характеристики": {
"@timestamp": {
"тип": "дата"
},
"айпи адрес": {
"тип": "ip"
},
"timestamp": {
"тип": "дата",
"формат": "гггг-ММ-дд ЧЧ: мм: сс || гггг-ММ-дд || epoch_millis"
},
"ценить": {
"тип": "двойной"
}
}
},
"настройки": {
"показатель": {
"creation_date": "1625382479459",
"number_of_shards": "2",
"number_of_replicas": "1",
"uuid": "rYUlpOXDSUSuZifQLPfa5A",
"версия": {
"created": "7100299"
},
"provided_name": "logs-2020-01-01"
}
}
}
}
Параметры шаблона индекса
Можно указать следующие параметры шаблона:
Параметр | Тип | Описание | Обязательный |
---|---|---|---|
шаблон | Объект | Укажите параметры индекса , сопоставления и псевдонимы. | Нет |
приоритет | Целое число | Приоритет шаблона индекса. | № |
created_of | Строковый массив | Имена шаблонов компонентов, примененных к новому индексу вместе с текущим шаблоном. | Нет |
версия | Целое | Укажите номер версии, чтобы упростить управление шаблоном.По умолчанию null . | Нет |
_meta | Объект | Укажите метаинформацию о шаблоне. | Нет |
Как настроить шаблоны индекса Elasticsearch
Индексы — это важная функция Elasticsearch, без которой он, вероятно, не работал бы так, как он работает. Хотя индексы Elasticsearch могут различаться в зависимости от предполагаемого использования, они, как правило, имеют общие свойства.В связи с этим создание одинаковых свойств для всех индексов может быть утомительным. Вместо этого гораздо эффективнее создать шаблон, на который мы можем ссылаться при создании индекса.
В этом руководстве вы познакомитесь со всеми тонкостями шаблонов индексов Elasticsearch, которые позволяют определять шаблоны или схемы для общих индексов. Например, если вы постоянно регистрируете данные из внешних источников, вы можете определить схему для всех индексов журналирования.
ПРИМЕЧАНИЕ. Перед тем, как мы начнем, следует отметить, что в учебнике основное внимание уделяется последней версии Elasticsearch — 7.8 на момент написания — и он может отличаться от других версий. Мы также предполагаем, что где-то в системе запущен Elasticsearch.
Приступим к работе с шаблонами индекса Elasticsearch.
Что такое шаблон индекса Elasticsearch?
Шаблон индекса Elasticsearch — это метод, используемый для указания Elasticsearch настроить индексы при создании. Например, шаблон индекса, используемый в потоке данных, настраивает индексы поддержки потока при создании.Шаблон индекса создается вручную перед созданием индекса. При создании индекса шаблон применяет параметры конфигурации для индекса.
В последней версии Elasticsearch есть два типа используемых шаблонов. Один из них — это шаблон индекса , , а другой — шаблонов компонентов. Как мы уже установили, шаблоны индексов помогают создавать индексы Elasticsearch.
Шаблоны компонентов
— это повторно используемые модули или блоки, используемые для настройки параметров, сопоставления и псевдонимов.Шаблоны компонентов не применяются непосредственно к созданным индексам, но могут помочь в создании шаблонов индексов.
Некоторые шаблоны индексов по умолчанию, используемые Elasticsearch, включают: показатели — * — *, журналы — * — *.
Как создать шаблон индекса
Для создания новых шаблонов индексов или обновления существующих мы используем API шаблона PUT. Используя конечную точку _index_template, мы можем отправить HTTP-запрос на добавление шаблона.
Общий синтаксис для создания шаблона:
PUT _index_template / {template_name}
Стоит отметить, что имя шаблона является обязательным параметром.Рассмотрим запрос ниже, который создает шаблон индекса как template_1
.
PUT _index_template / template_1
{
/ * Определить шаблон индекса * /
«index_patterns»: [«te *»],
«priority»: 1,
/ * Определить настройки для индексов * /
«template»: {
«settings»: {
«number_of_shards»: 2
}
}
}
Для пользователей cURL команда:
curl -XPUT «http: // localhost: 9200 / _index_template / template_1» -H ‘Content-Type: application / json’ -d ‘{/ * Определение шаблона индекса * / «index_patterns»: [«te *»] , «Priority»: 1, / * Определение настроек индексов * / «template»: {«settings»: {«number_of_shards»: 2}}} ‘
Elasticsearch использует шаблон подстановки для сопоставления имен индексов, к которым применяются шаблоны.Изменение или обновление шаблона индекса не влияет на уже созданные индексы, а только на те, которые будут созданы после использования этого шаблона.
Сверху вы можете комментировать свои шаблоны, используя метод комментирования языка Си. Вы можете добавить столько комментариев, сколько захотите, в любом месте текста, кроме открывающихся фигурных скобок.
В теле шаблона индекса вы можете включать различные определения, например:
- Шаблон: Свойство шаблона (объект) определяет, какой шаблон будет применен; он может включать псевдонимы, сопоставления и настройки — это необязательный параметр.
- Composed_of: Это свойство определяет список имен для шаблонов компонентов. После определения шаблоны компонентов объединяются в порядке их спецификации. Это означает, что последний определенный шаблон компонента имеет наивысший приоритет.
- Priority: Свойство priority определяет приоритет шаблона индекса при создании индекса. Если какой-либо приоритет имеет наивысшее значение, он получает более высокий приоритет по сравнению с более низкими значениями. Значение приоритета не требуется и имеет целочисленный тип.0 — значение по умолчанию для неуказанных шаблонов.
- Версия: Параметр версии указывает версию шаблона индекса, которая помогает управлять шаблонами.
Есть и другие свойства, которые можно включить в тело шаблона индекса. Прочтите документацию, чтобы узнать больше.
https://www.elastic.co/guide/en/elasticsearch/reference/7.10/index-templates.html
Ниже приведен пример запроса на создание нового шаблона с версией 1.0
PUT / _index_template / template_2
{
«index_patterns»: [«remp *», «re *»],
«priority»: 1,
«template»: {
«settings»: {
«number_of_shards»: 2 ,
«number_of_replicas»: 0
}
},
«version»: 1.0
}
У вас не может быть более одного шаблона индекса с совпадающим шаблоном и одинаковым приоритетом. Следовательно, убедитесь, что назначены разные приоритеты для соответствия шаблонам шаблонов.
Как получить шаблон индекса
Чтобы просмотреть информацию о шаблоне индекса, отправьте запрос GET в _index_template API. Например, для просмотра информации о шаблоне_2 используйте запрос:
GET _index_template / template_2
Команда cURL:
curl -XGET «http: // localhost: 9200 / _index_template / template_2»
Эта команда должна отображать информацию о шаблоне_2
{
«шаблоны_индекса»: [
{
«имя»: «шаблон_2»,
«шаблон_индекса»: {
«шаблоны_индекса»: [
«remp *»,
«re *»
],
«шаблон»: {
«settings»: {
«index»: {
«number_of_shards»: «2»,
«number_of_replicas»: «0»
}
}
},
«Compose_of»: [],
«priority»: 1,
«версия»: 1
}
}
]
}
Вы также можете использовать подстановочные знаки для получения подходящих шаблонов.Например, рассмотрите приведенный ниже запрос на просмотр всех шаблонов в Elasticsearch.
Команда cURL -.
curl -XGET http: // локальный: 9200 / _index_template / *
Эта команда должна предоставить вам информацию обо всех шаблонах в Elasticsearch
.
{
«index_templates»: [
{
«name»: «ilm-history»,
«index_template»: {
«index_patterns»: [
«ilm-history-3 *»
],
«template»: {
«настройки»: {
«индекс»: {
«формат»: «1»,
«жизненный цикл»: {
«имя»: «ilm-history-ilm-policy»,
«rollover_alias»: «ilm -history-3 «
},
» hidden «:» true «,
» number_of_shards «:» 1 «,
» auto_expand_replicas «:» 0-1 «,
» number_of_replicas «:» 0 «
}
},
«сопоставления»: {
«динамический»: false,
«свойства»: {
«index_age»: {
«тип»: «long»
},
«@timestamp»: {
«формат»: «epo ch_millis «,
» type «:» date «
},
» error_details «: {
» type «:» text «
},
» success «: {
» type «:» boolean «
},
» index «: {
» type «:» keyword «
},
» state «: {
» dynamic «: true,
» type «:» object «,
———— ————— ВЫХОД ОБРЕЗАННЫЙ ———————————- —
Как удалить шаблоны
Удалить шаблон так же просто, как и шаблон GET, но использовать запрос DELETE как:
УДАЛИТЬ _index_template / template_2
Вы можете использовать команду cURL:
curl -XDELETE «http: // localhost: 9200 / _index_template / template_2»
Эта команда автоматически удаляет указанный шаблон.